/**
 * 字符串对象
 *      为了方便操作基本数据类型. JS提供了三个特殊的引用类型: String、Number和 Boolean
 *      基本包装类型就是把简单数据类型包装成为复杂数据类型, 这样基本数据类型就有了属性和方法
 */

var str = 'tom';
// 注意一点: 基本数据类型是没有属性和方法的, 而对象才有属性和方法
// 而下面的代码可以执行, 这是因为 JS 把基础数据类型包装为复杂数据类型
/**
 * 执行过程如下
 * // 1.生成临时变量, 把简单类型包装为复杂数据类型
 * var temp = new String('tom');
 * // 2.赋值给我们声明的字符变量
 * str = temp;
 * // 3.销毁临时变量
 * temp = null;
 */
console.log(str.length);

/**
 * 查找字符串"abcoefoxyozzopp"中所有o出现的位置以及次数
 */
function findIndexAndCount(str, char) {
    let count = 0;
    let flag = false;
    for (let i = 0; i < str.length; i = i + 1 + indexOf) {
        var indexOf = str.indexOf(char, i);
        if (indexOf !== -1) {
            flag = true;
            count++;
            console.log(`${char} 在 ${str} 第${count}次出现位置${indexOf}`);
        } else {
            indexOf = 0;
        }
    }
    if (flag) {
        console.log(`${char} 在 ${str} 中共出现过${count}次`);
    } else {
        console.log(`${char} 在 ${str} 中不存在!`);
    }

}

findIndexAndCount('abcoefoxyozzopp', 'o');
console.log('-----------------------------')
findIndexAndCount('abcoefoxyozzopp', '1');
